Transparent Textures
GoldenEye does the following to set transparent Textures

BA 00 14 02 00 10 00 00 	SetCycle(2)
BA 00 10 01 00 01 00 00 	SetTextureLOD(LOD) //Enable Mip-Maping
BA 00 11 02 00 00 00 00 	SetTextureDetail(Clamp) //No Detail
BA 00 0C 02 00 00 20 00 	SetTextureFilter(Bi-linear) // Bi-Linear Interpolation
FB 00 00 00 00 00 00 FF 	G_SETENVCOLOR(000,000,000,255) //Set Environment colour register to use alpha
B9 00 03 1D 0C 18 4D D8 	*Invalid rendermode // Use Translation Look Up Table
-> B9 00 03 1D C8 10 4D D8 	SetRenderMode(AA_EN, Z_CMP, IM_RD, FC_BL, CL_CVG, WRAP, XLU,	//force blender makes primitive transparent
											//Colour On Coverage does Nothing
						CLRFOG*ASHADE+CLRIN*1-A, CLRIN*AIN+CLRMEM*1-A) //Standard fogging mux
FC 26 A0 04 1F 10 93 FF 	SetCombiner(TRILERP, (Com - 0) * Shade + 0, (Com - 0) * Env + 0))  //here is where the env colour comes to play
				//It sets its alpha to multiply that of the texture instead of using shade which has been comprimised by blender. 
				//(hence normally goes completly invisible)

This results in the following



It can be Z-Buffered but The result is 





An Alternate way to do Transparency is to use the rendermode:
B900031D C810 5878		SetRenderMode(AA_EN, Z_CMP, Z_UPD, CVG*A, FC_BL, IM_RD, CLAMP, XLU
						CLRFOG*ASHADE+CLRIN*1-A, CLRIN*AIN+CLRMEM*1-A) //Standard fogging mux





of cource, this brings me to the 3rd way, use alpha compare.

BA 00 14 02 00 10 00 00 	SetCycle(2)
BA 00 10 01 00 01 00 00 	SetTextureLOD(LOD) //Enable Mip-Maping
BA 00 11 02 00 00 00 00 	SetTextureDetail(Clamp) //No Detail
BA 00 0C 02 00 00 20 00 	SetTextureFilter(Bi-linear) // Bi-Linear Interpolation
B9 00 00 02 00 00 00 01 	SetAlphaCompare(Threshold)
				SetRenderMode(Z_CMP, Z_UPD, WRAP, XLU, 	//Only Z is required
						CLRFOG*ASHADE+CLRIN*1-A, CLRIN*AIN+CLRMEM*1-A) //Standard fogging mux
				SetCombiner(TRILERP, MODULATERGBA2)  //normal combiner


I Have found a 4th way to show Transparent Textures.
This mode gives hard lines and is perfect for railings etc.
Its output is identical to Alpha Compare.

B900031D C810 1438 		SetRenderMode(AA, Z_CMP, Z_UPD, CVG*A,
						CLRFOG*ASHADE+CLRIN*1-A, CLRIN*AIN+CLRMEM*1-A) //Standard fogging mux

These 2 methods produce this result. If you notice, both of these are actually slightly faster,


One can Also create a Heat Distortion Effect on the edges of popups by doing the following:

BA 00 14 02 00 10 00 00 	SetCycle(2)
BA 00 10 01 00 01 00 00 	SetTextureLOD(LOD) //Enable Mip-Maping
BA 00 11 02 00 00 00 00 	SetTextureDetail(Clamp) //No Detail
BA 00 0C 02 00 00 20 00 	SetTextureFilter(Bi-linear) // Bi-Linear Interpolation
FB 00 00 00 00 00 00 FF 	G_SETENVCOLOR(000,000,000,255) //Set Environment colour register to use alpha
B9 00 00 02 00 00 00 01 	SetAlphaCompare(Dither)
B9 00 03 1D C8 10 4D D8 	SetRenderMode(AA_EN, Z_CMP, CVG*A, FC_BL, CL_CVG, WRAP, XLU,	//force blender makes primitive transparent
											//Colour On Coverage does Nothing. CVG*A cuts round alpha
						CLRFOG*ASHADE+CLRIN*1-A, CLRIN*AIN+CLRMEM*1-A) //Standard fogging mux
FC 26 A0 04 1F 10 93 FF 	SetCombiner(TRILERP, (Com - 0) * Shade + 0, (Com - 0) * Env + 0))  //here is where the env colour comes to play
				//It sets its alpha to multiply that of the texture instead of using shade which has been comprimised by blender. 
				//(hence normally goes completly invisible)

This will add 'haze' round the edge of the texture just like a heat distortion in the distance.



===============================Translutant Surfaces=====================

For translutant surfaces we use the same commands as above. However Unlike the Opaque cutouts of the Tree, these surfaces can be seen 
through.
This poses a problem for the blender and switches the results of above.

Above you see that the cutouts CAN be Z-Ordered, so long as the right mode is used. 

Translutant Surfaces CAN NOT be Z-Ordered. 
If you do Z-Order them then they do NOT mix their colours together and you get this odd result
(You see that only Right side properly mixed. The left side has been overridden)


You MUST use the RenderMode of AA_EN, Z_CMP, IM_RD, FC_BL, CL_CVG, WRAP, XLU, (As used in GoldenEye/PerfectDark)

This correctly blends the colours of both intersecting translutent surfaces. As both surfaces are see-through there is no oddness
like there was with the tree cutout of one face seemingly overlapping the other.




To Be clear on when to use each mode.
Opaque Cutouts (Texture Alpha) Should use Z-Buffered mode (Compare & Update).

Translutent Surfaces (Vertex/Register Alpha) Should use Non-Z-Buffered Mode (Compare Only or none if pre-ordered).


Note: Translutent Textured Surfaces seem to not look right on emulators but look fine on Console

================================ VERTEX ALPHA ==========================

Not entirly Transparent Textures but related.

Vertex Alpha ONLY works when SetGeometryMode(FOG=False).
Everything else is fine and no matter the cycle count or texture will produce the following output where we correctly see a semi transparent face 
and a linear interpolated transparent corner.


Note that if the Blender contains FOG in Mux1 then the colour register for FOG will be blended with the Primitive at 100%

HOWEVER

If SetGeometryMode(FOG=TRUE) then first of all linear interpolation is removed (Carrington Institute used linear interpolation for reflection) The 
second thing is that  the semi-transparent face became more transparent.  If the object came out of fog it would be completely invisible. At this 
point I tried env colour but of course envcolor does not linear interpolate.